package com.bnyy.medicalHousekeeper.request.service;


import com.bnyy.common.ResponseData;
import com.google.gson.internal.LinkedTreeMap;

import java.util.List;

import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Streaming;
import retrofit2.http.Url;
import rx.Observable;

public interface RetrofitService {

    /**
     * 下载文件get请求
     *
     * @param url 链接地址
     * @return
     */
    @Streaming
    @GET
    Call<ResponseBody> download(@Url String url);

//    //全局变量
//    @POST("serve/comms/get_global_params")
//    @Headers({"Content-Type: application/json", "Accept: application/json"})
//    Observable<ResponseData<GlobalParams>> getGlobalParams(@Body RequestBody requestBody);
//
//    //全局变量
//    @POST("serve/comms/get_global_params")
//    @Headers({"Content-Type: application/json", "Accept: application/json"})
//    Observable<ResponseData<GlobalParams>> getGlobalParams();
//
//    @GET("comms/get_areas_3level")
//    Observable<ResponseData<ArrayList<_Province>>> getAreas3level();

//    //获取验证码
//    @POST("get_sms_code")
//    @FormUrlEncoded
//    Observable<ResponseData<Object>> getCode(@Field("phone") String phone);

//    // 获取用户信息
//    @GET("auth/flush_login")
//    Observable<ResponseData<User>> flushLogin();
//
//    //验证码登录
//    @POST("auth/login_with_code")
//    @FormUrlEncoded
//    Observable<ResponseData<User>> login(@Field("phone") String phone, @Field("code") String code, @Field("role_type") int role_type);
//
//    //退出登录
//    @GET("auth/logout")
//    Observable<ResponseData<Object>> logout();

//    // 获取提醒类型
//    @GET("serve/wears/clock_type_list")
//    Observable<ResponseData<ArrayList<ClockType>>> getRemindType(@Query("wear_id") int wearId);
//
//
//    //获取老人步数的每星期趋势
//    @POST("auth/get_week/step_count")
//    @FormUrlEncoded
//    Observable<ResponseData<ArrayList<StepCount.Data>>> getStepCount(@FieldMap Map<String, String> map);
//
//    //扫码绑定手表
//    @GET("auth/bind_wear")
//    Observable<ResponseData<ScancodeDot>> bindWear(@Query("wear_uuid") String wear_uuid);
//
//    //激活手表
//    @POST("serve/wears/device_activation")
//    Observable<ResponseData<Object>> activateDevice(@Query("appid") String appId,
//                                                    @Query("app_secret") String appSecret,
//                                                    @Query("timestamp") String timestamp,
//                                                    @Query("version") String version,
//                                                    @Query("sign") String sign,
//                                                    @Body RequestBody requestBody);
//
//    //绑定乐心设备
//    @POST("auth/lifesense/bind_wear")
//    Observable<ResponseData<User.DeviceUserInfo>> bindLxDevice(@Query("appid") String appId,
//                                                               @Query("timestamp") String timestamp,
//                                                               @Query("version") String version,
//                                                               @Query("sign") String sign,
//                                                               @Body RequestBody requestBody);
//
//    //绑定乐心设备
//    @POST("serve/wears/bind_wear")
//    Observable<ResponseData<Object>> bindDevice(@Query("appid") String appId,
//                                                @Query("timestamp") String timestamp,
//                                                @Query("version") String version,
//                                                @Query("sign") String sign,
//                                                @Body RequestBody requestBody);
//
//    //添加手环的使用者信息
//    @POST("auth/set_wear_user")
//    @FormUrlEncoded
//    Observable<ResponseData<Object>> setWearUser(@Field("wear_id") int wearId,
//                                                 @Field("mynickname") String mynickname,
//                                                 @Field("wear_name") String wear_name,
//                                                 @Field("realname") String realname,
//                                                 @Field("identity") String identity,
//                                                 @Field("relationship") String relationship,
//                                                 @Field("sex") int sex,
//                                                 @Field("birthday") String birthday,
//                                                 @Field("height") int height,
//                                                 @Field("weight") int weight,
//                                                 @Field("phone") String phone,
//                                                 @Field("provid") int provid,
//                                                 @Field("cityid") int cityid,
//                                                 @Field("countyid") int countyid,
//                                                 @Field("addr") String addr);
//
//    // 获取健康周报
//    @GET("serve/web_users/get_wear_weekly_data")
//    Observable<ResponseData<HeathWeekly>> getHealthWeekly(@Query("wear_id") int wearId);
//
//    //手环电量和佩戴情況接口
//    @POST("auth/get_wear_status")
//    @FormUrlEncoded
//    Observable<ResponseData<WearStatus>> getWearStatus(@Field("wear_id") int wearId);
//
//    //获取登录用户的手环列表信息接口
////    @GET("auth/get_login_user_wearlist")
////    Observable<ResponseData<DeviceUserInfos>> getWearlist();
//
//    @POST("serve/wears/get_wear_list")
//    Observable<ResponseData<ArrayList<DeviceType>>> getDeviceTypeList();
//
//    //删除设备用户
//    @GET("serve/wears/del_view_user")
//    Observable<ResponseData<Object>> delectBinder(@Query("view_id") int view_id);
//
//    //上传头像
//    @POST("auth/modify_userimg")
//    @Multipart
//    Observable<UpLoadImgDto> updatePortrait(@Query("wear_id") int wear_id, @Part() List<MultipartBody.Part> parts);
//
//    //修改性别
//    @POST("auth/modify_sex")
//    @FormUrlEncoded
//    Observable<ResponseData<Object>> modifySex(@Field("wear_id") int wear_id, @Field("sex") int sex);
//
//    //修改生日
//    @POST("auth/modify_birthday")
//    @FormUrlEncoded
//    Observable<ResponseData<Object>> modifyBirthday(@Field("wear_id") int wear_id, @Field("birthday") String birthday);
//
//    //修改身高
//    @POST("auth/modify_height")
//    @FormUrlEncoded
//    Observable<ResponseData<Object>> modifyHeight(@Field("wear_id") int wear_id, @Field("height") int height);
//
//    //修改体重
//    @POST("auth/modify_weight")
//    @FormUrlEncoded
//    Observable<ResponseData<Object>> modifyWeight(@Field("wear_id") int wear_id, @Field("weight") int weight);
//
//    // 获取手表佩戴者某个时间区间的详细数据，周月柱形图（心率、血压、血氧、低温）
//    @GET("serve/web_users/get_wear_data_with_day")
//    Observable<ResponseData<BarChartData>> getWearDescData(@Query("wear_id") int wear_id,
//                                                           @Query("itype") int itype,
//                                                           @Query("sdt") String sdt,
//                                                           @Query("edt") String edt);
//
//
//    // 获取手表佩戴者某个时间区间的详细数据，周月柱形图（心率、血压、血氧、低温）
//    @GET("serve/web_users/get_wear_data_with_day")
//    Observable<ResponseData<Object>> getHealthData(@Query("wear_id") int wear_id,
//                                                   @Query("itype") int itype,
//                                                   @Query("sdt") String sdt,
//                                                   @Query("edt") String edt);
//
//    // 获取心率周月数据
//    @GET("serve/web_users/get_wear_data_with_day?itype=" + Constant.HealthDataType.HEART_RATE)
//    Observable<ResponseData<HeartRate>> getHeartRate(@Query("wear_id") int wear_id,
//                                                     @Query("sdt") String sdt,
//                                                     @Query("edt") String edt);
//
//    // 获取血压周月数据
//    @GET("serve/web_users/get_wear_data_with_day?itype=" + Constant.HealthDataType.BLOOD_PRESSURE)
//    Observable<ResponseData<BloodPressure>> getBloodPressure(@Query("wear_id") int wear_id,
//                                                             @Query("sdt") String sdt,
//                                                             @Query("edt") String edt);
//
//    // 获取血氧周月数据
//    @GET("serve/web_users/get_wear_data_with_day?itype=" + Constant.HealthDataType.BLOOD_OXYGEN)
//    Observable<ResponseData<BloodOxygen>> getBloodOxygen(@Query("wear_id") int wear_id,
//                                                         @Query("sdt") String sdt,
//                                                         @Query("edt") String edt);
//
//    // 获取血氧周月数据
//    @GET("serve/web_users/get_wear_data_with_day?itype=" + Constant.HealthDataType.TEMPERATUR)
//    Observable<ResponseData<Temperatur>> getTemperatur(@Query("wear_id") int wear_id,
//                                                       @Query("sdt") String sdt,
//                                                       @Query("edt") String edt);
//
//    // 获取步数周月数据
//    @GET("serve/web_users/get_wear_data_with_day?itype=" + Constant.HealthDataType.STEP)
//    Observable<ResponseData<com.example.llqandroid.bean.healthData.StepCount>> getStepCount(@Query("wear_id") int wear_id,
//                                                                                            @Query("sdt") String sdt,
//                                                                                            @Query("edt") String edt);
//
//    // 获取体脂周月数据
//    @GET("serve/web_users/get_wear_data_with_day?itype=" + Constant.HealthDataType.WEIGHT)
//    Observable<ResponseData<Weight>> getWeight(@Query("wear_id") int wear_id,
//                                               @Query("sdt") String sdt,
//                                               @Query("edt") String edt);
//
//    // 获取睡眠周月数据
//    @GET("serve/web_users/get_wear_data_with_day?itype=" + Constant.HealthDataType.SLEEP)
//    Observable<ResponseData<Sleep>> getSleep(@Query("wear_id") int wear_id,
//                                             @Query("sdt") String sdt,
//                                             @Query("edt") String edt);
//
//    // 获取睡眠周月数据
//    @GET("serve/web_users/get_wear_data_with_day")
//    Observable<ResponseData<Sleep>> getWeeklyHealthData(@Query("itype") int type, @Query("wear_id") int wear_id,
//                                                        @Query("sdt") String sdt,
//                                                        @Query("edt") String edt);
//
//    // 获取心率日数据
//    @GET("serve/web_users/get_wear_data_with_minute?itype=" + Constant.HealthDataType.HEART_RATE)
//    Observable<ResponseData<HeartRate>> getHeartRateDay(@Query("wear_id") int wear_id,
//                                                        @Query("sdt") String sdt,
//                                                        @Query("edt") String edt);
//
//    // 获取血压日数据
//    @GET("serve/web_users/get_wear_data_with_minute?itype=" + Constant.HealthDataType.BLOOD_PRESSURE)
//    Observable<ResponseData<BloodPressure>> getBloodPressureDay(@Query("wear_id") int wear_id,
//                                                                @Query("sdt") String sdt,
//                                                                @Query("edt") String edt);
//
//    // 获取血氧日数据
//    @GET("serve/web_users/get_wear_data_with_minute?itype=" + Constant.HealthDataType.BLOOD_OXYGEN)
//    Observable<ResponseData<BloodOxygen>> getBloodOxygenDay(@Query("wear_id") int wear_id,
//                                                            @Query("sdt") String sdt,
//                                                            @Query("edt") String edt);
//
//    // 获取体温日数据
//    @GET("serve/web_users/get_wear_data_with_minute?itype=" + Constant.HealthDataType.TEMPERATUR)
//    Observable<ResponseData<Temperatur>> getTemperaturDay(@Query("wear_id") int wear_id,
//                                                          @Query("sdt") String sdt,
//                                                          @Query("edt") String edt);
//
//    // 获取步数日数据
//    @GET("serve/web_users/get_wear_data_with_minute?itype=" + Constant.HealthDataType.STEP)
//    Observable<ResponseData<com.example.llqandroid.bean.healthData.StepCount>> getStepCountDay(@Query("wear_id") int wear_id,
//                                                                                               @Query("sdt") String sdt,
//                                                                                               @Query("edt") String edt);
//
//    // 获取体脂日数据
//    @GET("serve/web_users/get_wear_data_with_second?itype=" + Constant.HealthDataType.WEIGHT)
//    Observable<ResponseData<Weight>> getWeightDay(@Query("wear_id") int wear_id,
//                                                  @Query("sdt") String sdt,
//                                                  @Query("edt") String edt);
//
//    // 获取睡眠日数据
//    @GET("serve/web_users/get_wear_data_with_minute?itype=" + Constant.HealthDataType.SLEEP)
//    Observable<ResponseData<SleepDay>> getSleepDay(@Query("wear_id") int wear_id,
//                                                   @Query("sdt") String sdt,
//                                                   @Query("edt") String edt);
//
//    //获取设备绑定用户
//    @GET("serve/wears/get_view_users")
//    Observable<ResponseData<ArrayList<Observer>>> getBinderList(@Query("wear_id") int wear_id);
//
//    // 转让管理员
//    @GET("serve/wears/change_view_owner")
//    Observable<ResponseData<Object>> setManager(@Query("wear_id") int wear_id, @Query("target_user_id") int target_user_id);
//
//    // 删除/解绑设备
//    @GET("serve/wears/unbind_wear")
//    Observable<ResponseData<Object>> unbind(@Query("wear_id") int wear_id);
//
//    // 提交乐心设备数据
//    @POST("iot_server/lifesense/data_uploads")
//    Observable<ResponseData<Object>> commitLxData(@Query("appid") String appId,
//                                                  @Query("timestamp") String timestamp,
//                                                  @Query("version") String version,
//                                                  @Query("sign") String sign,
//                                                  @Body RequestBody requestBody);
//
//    // 体脂18项计算
//    @POST("https://api.leshiguang.com/api/weight/algorithm/v1.0/getWeightIndexCalculateResult")
//    Observable<ResponseData<LxAnalyseWeightData>> analyseWeightData(@Query("api_appKey") String appId,
//                                                                    @Query("api_timestamp") String timestamp,
//                                                                    @Query("api_version") String version,
//                                                                    @Query("api_sign") String sign,
//                                                                    @Body RequestBody requestBody);
//
//    // 体脂指标解读
//    @POST("https://api.leshiguang.com/api/weight/algorithm/v1.0/getWeightIndexCalculateAndAnalysisResult")
//    Observable<ResponseData<LxAnalyseWeightQuotaData>> analyseWeightQuotaData(@Query("api_appKey") String appId,
//                                                                              @Query("api_timestamp") String timestamp,
//                                                                              @Query("api_version") String version,
//                                                                              @Query("api_sign") String sign,
//                                                                              @Body RequestBody requestBody);
//
//    // 睡眠数据分析
//    @POST("https://api.leshiguang.com/api/sleep/v1.0/origin/data/analysis")
//    Observable<ResponseData<ArrayList<LxSleepData>>> analysSleepData(@Query("api_appKey") String appId,
//                                                                     @Query("api_timestamp") String timestamp,
//                                                                     @Query("api_version") String version,
//                                                                     @Query("api_sign") String sign,
//                                                                     @Body RequestBody requestBody);
//
//    // 提交设备数据
//    @POST("iot_server/xingmai/data_uploads")
//    Observable<ResponseData<Object>> commiXmData(@Query("appid") String appId,
//                                                 @Query("timestamp") String timestamp,
//                                                 @Query("version") String version,
//                                                 @Query("sign") String sign,
//                                                 @Body RequestBody requestBody);
//
//    // 获取最新健康数据 弃用
//    @GET("serve/web_users/get_wear_lastest_data")
//    Observable<ResponseData<ArrayList<WearLatestData>>> getWearLatestData(@Query("wear_id") int wearId);
//
//    // 获取最新健康数据
//    @GET("serve/web_users/get_user_lastest_data")
//    Observable<ResponseData<ArrayList<WearLatestData>>> getUserLatestData(@Query("user_id") int userId);
//
//    //获取健康值范围 0 心率 1 睡眠 20 血压 21
//    @GET("get_health_value_ranges")
//    Observable<ResponseData<ArrayList<HealthRange>>> getHealthRange();
//
//    //手环电量和佩戴情況接口
//    @POST("auth/get_wear_status")
//    @FormUrlEncoded
//    Observable<ResponseData<WearStatus>> getDeviceInfo(@Field("wear_id") int wear_id);
//
//    //手环电量和佩戴情況接口
//    @POST("serve/wears/update_wear")
//    Observable<ResponseData<Object>> editWear(@Body RequestBody requestBody);
//
//    // 获取共享者列表
//    @GET("serve/wears/get_view_users")
//    Observable<ResponseData<ArrayList<Observer>>> getObserverList(@Query("wear_id") int wearId);
//
//    // 添加共享者
//    @POST("serve/wears/shared_wear")
//    Observable<ResponseData<Object>> addObserver(@Body RequestBody requestBody);
//
//    // 删除共享者
//    @GET("serve/wears/del_view_user")
//    Observable<ResponseData<Object>> deleteObserver(@Query("view_ids") String wearIds);
//
//    // 检查设备是否可以进行绑定
//    @GET("serve/wears/checking_wear_iscanbind")
//    Observable<ResponseData<Object>> checkDeviceIsBound(@Query("wear_uuid") String uuid);
//
//    //修改个人信息
//    @POST("serve/web_users/update_user_info")
//    Observable<ResponseData<Object>> editUserInfo(@Body RequestBody requestBody);
//
    //上传文件
    @POST("comms/uploads")
    @Multipart
    Observable<ResponseData<LinkedTreeMap<String, String[]>>> uploadFiles(@Part() List<MultipartBody.Part> parts);

//    //获取余量
//    @GET("serve/sim/card_usage_details")
//    Observable<ResponseData<FlowInfo>> getFlowInfo(@Query("wear_id") int wear_id);
//
//    //地址识别
//    @POST("https://wangzc.wang/smAddress")
//    @Headers({"Content-Type: application/json", "Accept: application/json"})
//    Observable<SpotAddress> spotAddress(@Body RequestBody requestBody);
}
















































